package com.haixiaoke.saas.repository.mapper;

import java.util.List;

import com.haixiaoke.saas.repository.pojo.MetroStation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectKey;

/**
 * 地铁车站Mapper接口
 *
 * @author haixiaoke
 * @date 2023-04-07
 */
@Mapper
public interface MetroStationMapper {
    /**
     * 查询地铁车站
     *
     * @param stationId 地铁车站主键
     * @return 地铁车站
     */
    MetroStation selectMetroStationByStationId(Long stationId);

    /**
     * 查询地铁车站列表
     *
     * @param metroStation 地铁车站
     * @return 地铁车站集合
     */
    List<MetroStation> selectMetroStationList(MetroStation metroStation);

    /**
     * 新增地铁车站
     *
     * @param metroStation 地铁车站
     * @return 结果
     */
/*    @SelectKey(statement = "select last_insert_id() from base_metro_station",
            keyColumn = "station_id",keyProperty = "stationId",before = false,resultType = Long.class)*/
    int insertMetroStation(MetroStation metroStation);

    /**
     * 修改地铁车站
     *
     * @param metroStation 地铁车站
     * @return 结果
     */
    int updateMetroStation(MetroStation metroStation);

    /**
     * 删除地铁车站
     *
     * @param stationId 地铁车站主键
     * @return 结果
     */
    int deleteMetroStationByStationId(Long stationId);

    /**
     * 批量删除地铁车站
     *
     * @param stationIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteMetroStationByStationIds(Long[] stationIds);

    /**
     * 校验经纬度是否存在
     * @param longitude 经度
     * @param latitude  纬度
     * @return
     */
    int checkLongitudeAndLatitude(@Param("longitude") Long longitude,@Param("latitude") Long latitude);

    /**
     * 根据省市校验站台是否存在
     *
     * @param stationName 站台名称
     * @param provinceId  省id
     * @param cityId      市id
     * @return
     */
    int checkStationUniqueness(@Param("stationName") String stationName, @Param("provinceId")Long provinceId, @Param("cityId") Long cityId);

    /**
     * 根据站台id进行软删除
     * @param stationIds
     * @return
     */
    int softDeleteMetroStationByStationIds(Long[] stationIds);

    MetroStation selectMetroStation(@Param("stationName") String stationName, @Param("provinceId") Long provinceId, @Param("cityId") Long cityId);

    List<MetroStation> selectMetroStationByStationIdIn(List<Long> stationIds);


}
